﻿using System;

// 形状接口
public interface IShape
{
    double CalculateArea(); // 计算面积
    bool IsValid(); // 判断形状是否合法
}

// 长方形类
public class Rectangle : IShape
{
    public double Width { get; set; } // 宽度
    public double Height { get; set; } // 高度

    // 实现计算面积方法
    public double CalculateArea()
    {
        return Width * Height;
    }

    // 实现判断形状是否合法方法
    public bool IsValid()
    {
        return Width > 0 && Height > 0;
    }
}

// 正方形类
public class Square : IShape
{
    public double SideLength { get; set; } // 边长

    // 实现计算面积方法
    public double CalculateArea()
    {
        return SideLength * SideLength;
    }

    // 实现判断形状是否合法方法
    public bool IsValid()
    {
        return SideLength > 0;
    }
}

// 三角形类
public class Triangle : IShape
{
    public double BaseLength { get; set; } // 底边长
    public double Height { get; set; } // 高度

    // 实现计算面积方法
    public double CalculateArea()
    {
        return 0.5 * BaseLength * Height;
    }

    // 实现判断形状是否合法方法
    public bool IsValid()
    {
        return BaseLength > 0 && Height > 0;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Rectangle rectangle = new Rectangle { Width = 5, Height = 3 };
        Square square = new Square { SideLength = 4 };
        Triangle triangle = new Triangle { BaseLength = 6, Height = 4 };

        // 测试长方形
        Console.WriteLine("长方形面积：" + rectangle.CalculateArea());
        Console.WriteLine("长方形是否合法：" + rectangle.IsValid());

        // 测试正方形
        Console.WriteLine("正方形面积：" + square.CalculateArea());
        Console.WriteLine("正方形是否合法：" + square.IsValid());

        // 测试三角形
        Console.WriteLine("三角形面积：" + triangle.CalculateArea());
        Console.WriteLine("三角形是否合法：" + triangle.IsValid());

        Console.ReadLine();
    }
}
